1. Field of the Invention
The present invention is generally related to operating systems for general purpose computers and, in particular, an operating system architecture that optimally permits execution from ROM and in diskless environments with application program code provided in a reserved portion of main memory, though identified in file system name space.
2. Description of the Related Art
The complexity of applications and the intended operating environments that are addressed by present day computer systems has grown increasingly sophisticated and diverse. Accordingly, the sophistication and complexity of the operating systems needed to control computer systems has also increased. Areas of particularly increased complexity include embedded controller and distributed execution computer architectures.
Embedded controllers are often utilized to control dedicated hardware in applications such as machine control, robotics, process control, avionics, and instrumentation. In order to meet the control requirements of such applications, the embedded controller must be able to receive and process input data, correlate the processed data with defined control state transitions, and process and output control data as appropriate to respond to the input data, often all in real time. Where the complexity of a control process is substantial, multiple applications may be implemented to direct, monitor, analyze, and report corresponding aspects of the control process. Thus, the operating system must desirably provide not only for the multi-tasked execution of control applications, it must also provide for optimal interprocess communications between the applications. Depending on the actual operating environment and the needs and function of intercommunicating applications, any one of several interprocess communication software mechanisms may prove to be the optimal choice; a selection made independently by the application programs. Therefore, a rather sophisticated operating system is required to simultaneously support a variety of interprocess communication software mechanisms.
In order to ensure the robustness of specific, often dedicated application programs, as well as the operating system itself, the ideal design choice is to utilize a single software and hardware architecture for both the embedded controller and as a software development and testing platform for both application programs and the operating system. However, the actual operating environment of embedded controllers, for example, is usually substantially less than desirable for software development. Specifically, many embedded controller applications do not provide for or, due to hostile environmental conditions or cost considerations, allow for the use of a disk drive; a platform component generally considered essential for software development. Further, the resource requirements of an operating system suitable for software development, such as a minimum RAM main memory size, may reduce the long-term commercial practicality of a common hardware architecture embedded controller system.
In such situations, fully custom embedded controller application programs and operating systems are typically developed and tested in a "cross-development" environment. Such environments are highly desirable where the operating system and applications do not provide a disk drive paradigm. However, the software layer implemented to emulate the actual hardware environment of the embedded controller application programs and operating system will reduce the at least initial robustness of the development. In particular, testing of the application programs and operating system, given the uncertainties and impreciseness of the cross-development environment with respect to the actual hardware environment of the embedded controller, is considerably more difficult to perform and verify.
Alternatively, a design choice can be made to use application programs that rely on a disk drive paradigm. A conventional disk operating system can then be used. Typically, such implementations merely provide for a direct image of the operating system and application programs to be stored in ROM. The image is copied to RAM main memory on initialization of the embedded controller. The disk drive paradigm is suggested through the allocation of a RAM storage area configured as a pseudo-disk drive. Implementations of this type of design, again, have the limitation of requiring not only substantial ROM storage space, but also a much larger RAM main memory.
Distributed execution computer architectures are typically implemented as a node or workstation embodying a general purpose computer, a main memory and a communications port. A disk drive for local data storage is characteristically absent. Cost savings is a primary reason for not providing a disk drive. Other reasons include a designed-in dedicated reliance on a central or remote file server for all program and data files, an ability to centrally manage and maintain the application programs and operating system executed by the node, and enforced data integrity and security considerations. In any case, such diskless workstations must be typically capable of executing operating systems that are fully compatible with standard, commercial application programs. Consequently, provision must be made for the fact that such operating systems and their application programs typically incorporate if not essentially rely on a disk drive paradigm.
Another often desired feature for diskless workstations is to have some limited stand-alone operational capability. In a minimum form, this allows diagnostic programs to be run. However, a less essential, but more practical reason is to remove the requirement that the operating system and each instantiation of an application program be transferred through the communications port. Not only does this generally burden the communication channel, but it places specific requirements on the file server and introduces an often significant delay in the loading of the operating system and each instantiation of an application program. Consequently, it is desireable that at least a basic operating system and the most frequently used application programs be stored locally in ROM or tightly packaged for streamlined transfer via the communications channel. Again, however, a premium is evident on the optimal use of local ROM storage and RAM main memory.